HAL DCMI IRQ handler and callbacks functions migration

This section provides information about the HAL DCMI callbacks register/unregister functions migration.

HAL DCMI Callbacks functions

Title

HAL1

HAL2

Vsync Event Callback

void HAL_DCMI_VsyncEventCallback(DCMI_HandleTypeDef *hdcmi);
void HAL_DCMI_PipeVsyncEventCallback(hal_dcmi_handle_t *hdcmi,
                                     hal_dcmi_pipe_t pipe);

Hsync Callback

void HAL_DCMI_HsyncCallback(DCMI_HandleTypeDef *hdcmi);

Not yet implemented in HAL2.

Vsync Callback

void HAL_DCMI_VsyncCallback(DCMI_HandleTypeDef *hdcmi);

Not yet implemented in HAL2.

Error Callback

void HAL_DCMI_ErrorCallback(DCMI_HandleTypeDef *hdcmi);
void HAL_DCMI_ErrorCallback(hal_dcmi_handle_t *hdcmi);
void HAL_DCMI_PipeErrorCallback(hal_dcmi_handle_t *hdcmi,
                                hal_dcmi_pipe_t pipe);

Frame event Callback

void HAL_DCMI_FrameEventCallback(DCMI_HandleTypeDef *hdcmi);
void HAL_DCMI_PipeFrameEventCallback(hal_dcmi_handle_t *hdcmi,
                                     hal_dcmi_pipe_t pipe);

Line event Callback

void HAL_DCMI_LineEventCallback(DCMI_HandleTypeDef *hdcmi);
void HAL_DCMI_PipeLineEventCallback(hal_dcmi_handle_t *hdcmi,
                                    hal_dcmi_pipe_t pipe);

HAL DCMI register callback functions

In HAL1, the function HAL_DCMI_RegisterCallback is used to register various DCMI callbacks through a single function with a specific callback ID, whereas, in HAL2, distinct functions are available to register each specific DCMI callback.

HAL 1

HAL 2

DCMI Pipe Frame Event callback

HAL_DCMI_RegisterCallback(&hdcmi,
                          HAL_DCMI_FRAME_EVENT_CB_ID,
                          USER_DCMI_FrameEventCallback);
HAL_DCMI_RegisterPipeFrameEventCallback(&hdcmi,
                                        HAL_DCMI_PIPE_0,
                                        USER_DCMI_PipeFrameEventCallback);

DCMI Pipe VSYNC Event callback

HAL_DCMI_RegisterCallback(&hdcmi,
                          HAL_DCMI_VSYNC_EVENT_CB_ID,
                          USER_DCMI_VsyncEventCallback);
HAL_DCMI_RegisterPipeVsyncEventCallback(&hdcmi,
                                        HAL_DCMI_PIPE_0,
                                        USER_DCMI_PipeVsyncEventCallback);

DCMI Pipe Line Event callback

HAL_DCMI_RegisterCallback(&hdcmi,
                          HAL_DCMI_LINE_EVENT_CB_ID,
                          USER_DCMI_LineEventCallback);
HAL_DCMI_RegisterPipeLineEventCallback(&hdcmi,
                                       HAL_DCMI_PIPE_0,
                                       USER_DCMI_PipeLineEventCallback);

DCMI Pipe Error callback

HAL_DCMI_RegisterCallback(&hdcmi,
                          HAL_DCMI_ERROR_CB_ID,
                          USER_DCMI_ErrorCallback);
HAL_DCMI_RegisterPipeErrorCallback(&hdcmi,
                                   HAL_DCMI_PIPE_0,
                                   USER_DCMI_PipeErrorCallback);

DCMI error callback

HAL_DCMI_RegisterCallback(&hdcmi,
                          HAL_DCMI_ERROR_CB_ID,
                          USER_DCMI_ErrorCallback);
HAL_DCMI_RegisterErrorCallback(&hdcmi,
                               USER_DCMI_ErrorCallback);

DCMI Msp Init Callback

HAL_DCMI_RegisterCallback(&hdcmi,
                          HAL_DCMI_MSPINIT_CB_ID,
                          USER_DCMI_MspInitCallback);
/* Removed / Sequence changed */

DCMI Msp DeInit Callback

HAL_DCMI_RegisterCallback(&hdcmi,
                          HAL_DCMI_MSPDEINIT_CB_ID,
                          USER_DCMI_MspDeInitCallback);
/* Removed / Sequence changed */

Related concept:

Individual callback registration APIs replace global register and unregister functions


HAL DCMI unregister callback functions

In HAL2, the unregister callback API has been removed. Instead, callbacks can be managed by re-registering the default HAL DCMI weak callbacks as needed.

HAL 1

HAL 2

DCMI Pipe Frame Event callback

HAL_DCMI_UnRegisterCallback(&hdcmi,
                            HAL_DCMI_FRAME_EVENT_CB_ID);
HAL_DCMI_RegisterPipeFrameEventCallback(&hdcmi,
                                        HAL_DCMI_PIPE_0,
                                        HAL_DCMI_PipeFrameEventCallback);

DCMI Pipe VSYNC Event callback

HAL_DCMI_UnRegisterCallback(&hdcmi,
                            HAL_DCMI_VSYNC_EVENT_CB_ID);
HAL_DCMI_RegisterPipeVsyncEventCallback(&hdcmi,
                                        HAL_DCMI_PIPE_0,
                                        HAL_DCMI_PipeVsyncEventCallback);

DCMI Pipe Line Event callback

HAL_DCMI_UnRegisterCallback(&hdcmi,
                            HAL_DCMI_LINE_EVENT_CB_ID);
HAL_DCMI_RegisterPipeLineEventCallback(&hdcmi,
                                       HAL_DCMI_PIPE_0,
                                       HAL_DCMI_PipeLineEventCallback);

DCMI Pipe Error callback

HAL_DCMI_UnRegisterCallback(&hdcmi,
                            HAL_DCMI_ERROR_CB_ID);
HAL_DCMI_RegisterPipeErrorCallback(&hdcmi,
                                   HAL_DCMI_PIPE_0,
                                   HAL_DCMI_PipeErrorCallback);

DCMI error callback

HAL_DCMI_UnRegisterCallback(&hdcmi,
                            HAL_DCMI_ERROR_CB_ID);
HAL_DCMI_RegisterErrorCallback(&hdcmi,
                               HAL_DCMI_ErrorCallback);

DCMI Msp Init Callback

HAL_DCMI_UnRegisterCallback(&hdcmi,
                            HAL_DCMI_MSPINIT_CB_ID);
/* Removed / Sequence changed */

DCMI Msp DeInit Callback

HAL_DCMI_UnRegisterCallback(&hdcmi,
                            HAL_DCMI_MSPDEINIT_CB_ID);
/* Removed / Sequence changed */

Related concept:

Individual callback registration APIs replace global register and unregister functions


HAL DCMI IRQ handlers

HAL1

HAL2

Function prototype

void HAL_DCMI_IRQHandler(void);
void HAL_DCMI_IRQHandler(hal_dcmi_handle_t *hdcmi);